package org.song.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.song.model.dto.BlogDto;
import org.song.model.vo.Blog;
import org.springframework.lang.NonNull;

import java.util.List;

// @Mapper注解和@FeignClient 注意一样 没有实现类确依然可以调用底层是基于JDK动态代理机制生成的实现对象
@Mapper
public interface BlogMapper {

    /**
     * 查询所有博客信息
     * @param blogDto
     * @return
     */
    @NonNull
    List<Blog> listBlogs(@NonNull BlogDto blogDto);

    /**
     * 根据博客信息删除指定博客
     * @param blog
     * @return
     */
    @NonNull
    Integer deleteBlog( @NonNull Blog blog);

    /**
     * 根据博客信息插入一条博客数据
     * @param blog
     * @return
     */
    @NonNull
    Integer insertBlog( @NonNull Blog blog);

    /**
     * 更新博客
     * @param blog
     * @return
     */
    @NonNull
    Integer updateBlog( @NonNull Blog blog);

    /**
     * 乐观锁更新博客数据
     * @param currentBlog
     * @return
     */
    @NonNull
    Boolean updateBlogWithVersion( @NonNull  Blog currentBlog );

}
